//
// Copyright © 2022 Swift Charts Examples.
// Open Source - MIT License

import Foundation

struct GitContribution: Identifiable {
    let date: Date
    let level: Int
    let id = UUID()
}

enum GitHubData {
    static var contributions = parseData()

    static private func parseData() -> [GitContribution] {
        rawData
            .split(separator: "\n")
            .compactMap { $0.isEmpty ? nil : String($0) }
            .map {
            let components = $0.components(separatedBy: ", ")
            return GitContribution(date: Date(timeIntervalSince1970: Double(components[0]) ?? 0),
                                   level: Int(components[1]) ?? 0)
        }
    }

    static private let rawData = """
        1624143600.0, 0
        1624230000.0, 0
        1624316400.0, 0
        1624402800.0, 0
        1624489200.0, 1
        1624575600.0, 0
        1624662000.0, 0
        1624748400.0, 0
        1624834800.0, 0
        1624921200.0, 0
        1625007600.0, 0
        1625094000.0, 1
        1625180400.0, 0
        1625266800.0, 0
        1625353200.0, 0
        1625439600.0, 1
        1625526000.0, 1
        1625612400.0, 1
        1625698800.0, 1
        1625785200.0, 1
        1625871600.0, 1
        1625958000.0, 1
        1626044400.0, 1
        1626130800.0, 1
        1626217200.0, 1
        1626303600.0, 1
        1626390000.0, 0
        1626476400.0, 1
        1626562800.0, 1
        1626649200.0, 1
        1626735600.0, 1
        1626822000.0, 1
        1626908400.0, 1
        1626994800.0, 1
        1627081200.0, 1
        1627167600.0, 1
        1627254000.0, 0
        1627340400.0, 1
        1627426800.0, 1
        1627513200.0, 1
        1627599600.0, 1
        1627686000.0, 1
        1627772400.0, 0
        1627858800.0, 1
        1627945200.0, 1
        1628031600.0, 1
        1628118000.0, 1
        1628204400.0, 1
        1628290800.0, 1
        1628377200.0, 1
        1628463600.0, 1
        1628550000.0, 1
        1628636400.0, 0
        1628722800.0, 1
        1628809200.0, 0
        1628895600.0, 1
        1628982000.0, 0
        1629068400.0, 0
        1629154800.0, 0
        1629241200.0, 1
        1629327600.0, 1
        1629414000.0, 0
        1629500400.0, 0
        1629586800.0, 0
        1629673200.0, 0
        1629759600.0, 0
        1629846000.0, 0
        1629932400.0, 0
        1630018800.0, 0
        1630105200.0, 1
        1630191600.0, 0
        1630278000.0, 0
        1630364400.0, 1
        1630450800.0, 1
        1630537200.0, 1
        1630623600.0, 3
        1630710000.0, 1
        1630796400.0, 2
        1630882800.0, 2
        1630969200.0, 1
        1631055600.0, 0
        1631142000.0, 0
        1631228400.0, 1
        1631314800.0, 0
        1631401200.0, 0
        1631487600.0, 1
        1631574000.0, 0
        1631660400.0, 1
        1631746800.0, 0
        1631833200.0, 0
        1631919600.0, 1
        1632006000.0, 1
        1632092400.0, 0
        1632178800.0, 0
        1632265200.0, 1
        1632351600.0, 0
        1632438000.0, 1
        1632524400.0, 0
        1632610800.0, 0
        1632697200.0, 1
        1632783600.0, 1
        1632870000.0, 2
        1632956400.0, 0
        1633042800.0, 1
        1633129200.0, 0
        1633215600.0, 0
        1633302000.0, 1
        1633388400.0, 0
        1633474800.0, 0
        1633561200.0, 0
        1633647600.0, 0
        1633734000.0, 0
        1633820400.0, 0
        1633906800.0, 0
        1633993200.0, 0
        1634079600.0, 1
        1634166000.0, 0
        1634252400.0, 1
        1634338800.0, 2
        1634425200.0, 1
        1634511600.0, 1
        1634598000.0, 0
        1634684400.0, 1
        1634770800.0, 0
        1634857200.0, 0
        1634943600.0, 0
        1635030000.0, 0
        1635116400.0, 0
        1635202800.0, 0
        1635289200.0, 0
        1635375600.0, 0
        1635462000.0, 0
        1635548400.0, 0
        1635634800.0, 0
        1635724800.0, 0
        1635811200.0, 0
        1635897600.0, 0
        1635984000.0, 0
        1636070400.0, 1
        1636156800.0, 1
        1636243200.0, 0
        1636329600.0, 1
        1636416000.0, 1
        1636502400.0, 0
        1636588800.0, 1
        1636675200.0, 1
        1636761600.0, 0
        1636848000.0, 0
        1636934400.0, 1
        1637020800.0, 0
        1637107200.0, 1
        1637193600.0, 0
        1637280000.0, 1
        1637366400.0, 1
        1637452800.0, 0
        1637539200.0, 0
        1637625600.0, 0
        1637712000.0, 1
        1637798400.0, 0
        1637884800.0, 0
        1637971200.0, 0
        1638057600.0, 0
        1638144000.0, 1
        1638230400.0, 1
        1638316800.0, 1
        1638403200.0, 0
        1638489600.0, 0
        1638576000.0, 0
        1638662400.0, 2
        1638748800.0, 1
        1638835200.0, 0
        1638921600.0, 2
        1639008000.0, 2
        1639094400.0, 0
        1639180800.0, 0
        1639267200.0, 1
        1639353600.0, 1
        1639440000.0, 1
        1639526400.0, 0
        1639612800.0, 1
        1639699200.0, 1
        1639785600.0, 0
        1639872000.0, 2
        1639958400.0, 1
        1640044800.0, 0
        1640131200.0, 0
        1640217600.0, 1
        1640304000.0, 0
        1640390400.0, 1
        1640476800.0, 0
        1640563200.0, 0
        1640649600.0, 0
        1640736000.0, 0
        1640822400.0, 1
        1640908800.0, 0
        1640995200.0, 0
        1641081600.0, 0
        1641168000.0, 1
        1641254400.0, 0
        1641340800.0, 1
        1641427200.0, 0
        1641513600.0, 0
        1641600000.0, 0
        1641686400.0, 0
        1641772800.0, 0
        1641859200.0, 0
        1641945600.0, 1
        1642032000.0, 0
        1642118400.0, 1
        1642204800.0, 1
        1642291200.0, 1
        1642377600.0, 1
        1642464000.0, 1
        1642550400.0, 1
        1642636800.0, 1
        1642723200.0, 0
        1642809600.0, 0
        1642896000.0, 0
        1642982400.0, 0
        1643068800.0, 0
        1643155200.0, 0
        1643241600.0, 0
        1643328000.0, 0
        1643414400.0, 1
        1643500800.0, 0
        1643587200.0, 0
        1643673600.0, 0
        1643760000.0, 0
        1643846400.0, 0
        1643932800.0, 0
        1644019200.0, 1
        1644105600.0, 1
        1644192000.0, 0
        1644278400.0, 1
        1644364800.0, 0
        1644451200.0, 0
        1644537600.0, 1
        1644624000.0, 1
        1644710400.0, 0
        1644796800.0, 0
        1644883200.0, 0
        1644969600.0, 1
        1645056000.0, 0
        1645142400.0, 0
        1645228800.0, 0
        1645315200.0, 0
        1645401600.0, 0
        1645488000.0, 0
        1645574400.0, 0
        1645660800.0, 0
        1645747200.0, 0
        1645833600.0, 1
        1645920000.0, 0
        1646006400.0, 0
        1646092800.0, 0
        1646179200.0, 0
        1646265600.0, 1
        1646352000.0, 1
        1646438400.0, 1
        1646524800.0, 1
        1646611200.0, 3
        1646697600.0, 3
        1646784000.0, 1
        1646870400.0, 0
        1646956800.0, 1
        1647043200.0, 0
        1647129600.0, 0
        1647216000.0, 0
        1647302400.0, 0
        1647388800.0, 1
        1647475200.0, 1
        1647561600.0, 1
        1647648000.0, 0
        1647734400.0, 0
        1647820800.0, 1
        1647907200.0, 0
        1647993600.0, 1
        1648080000.0, 1
        1648166400.0, 1
        1648252800.0, 1
        1648339200.0, 1
        1648422000.0, 1
        1648508400.0, 1
        1648594800.0, 1
        1648681200.0, 1
        1648767600.0, 1
        1648854000.0, 1
        1648940400.0, 1
        1649026800.0, 1
        1649113200.0, 1
        1649199600.0, 2
        1649286000.0, 1
        1649372400.0, 1
        1649458800.0, 1
        1649545200.0, 1
        1649631600.0, 2
        1649718000.0, 1
        1649804400.0, 1
        1649890800.0, 1
        1649977200.0, 1
        1650063600.0, 0
        1650150000.0, 1
        1650236400.0, 1
        1650322800.0, 1
        1650409200.0, 0
        1650495600.0, 1
        1650582000.0, 1
        1650668400.0, 0
        1650754800.0, 1
        1650841200.0, 1
        1650927600.0, 1
        1651014000.0, 1
        1651100400.0, 0
        1651186800.0, 0
        1651273200.0, 0
        1651359600.0, 0
        1651446000.0, 1
        1651532400.0, 1
        1651618800.0, 1
        1651705200.0, 0
        1651791600.0, 1
        1651878000.0, 0
        1651964400.0, 0
        1652050800.0, 0
        1652137200.0, 0
        1652223600.0, 0
        1652310000.0, 0
        1652396400.0, 1
        1652482800.0, 0
        1652569200.0, 0
        1652655600.0, 1
        1652742000.0, 1
        1652828400.0, 4
        1652914800.0, 1
        1653001200.0, 2
        1653087600.0, 2
        1653174000.0, 3
        1653260400.0, 2
        1653346800.0, 2
        1653433200.0, 1
        1653519600.0, 2
        1653606000.0, 1
        1653692400.0, 0
        1653778800.0, 0
        1653865200.0, 0
        1653951600.0, 1
        1654038000.0, 0
        1654124400.0, 0
        1654210800.0, 0
        1654297200.0, 0
        1654383600.0, 0
        1654470000.0, 0
        1654556400.0, 0
        1654642800.0, 1
        1654729200.0, 1
        1654815600.0, 1
        1654902000.0, 0
        1654988400.0, 3
        1655074800.0, 4
        1655161200.0, 1
        1655247600.0, 0
        1655334000.0, 1
        1655420400.0, 1
        1655506800.0, 0
        1655593200.0, 0
        1655679600.0, 1
        1655766000.0, 1
        1655852400.0, 1
        1655938800.0, 1
        1656025200.0, 0
        """
}
